op {
  graph_op_name: "CumulativeLogsumexp"
  visibility: HIDDEN
  in_arg {
    name: "x"
    description: <<END
A `Tensor`. Must be one of the following types: `float16`, `float32`, `float64`.
END
  }
  in_arg {
    name: "axis"
    description: <<END
A `Tensor` of type `int32` (default: 0). Must be in the range
`[-rank(x), rank(x))`.
END
  }
  attr {
    name: "exclusive"
    description: <<END
If `True`, perform exclusive cumulative log-sum-exp.
END
  }
  attr {
    name: "reverse"
    description: <<END
A `bool` (default: False).
END
  }
  summary: "Compute the cumulative product of the tensor `x` along `axis`."
  description: <<END
By default, this op performs an inclusive cumulative log-sum-exp,
which means that the first
element of the input is identical to the first element of the output:
```python
tf.math.cumulative_logsumexp([a, b, c])  # => [a, log(exp(a) + exp(b)), log(exp(a) + exp(b) + exp(c))]
```

By setting the `exclusive` kwarg to `True`, an exclusive cumulative log-sum-exp is
performed instead:
```python
tf.cumulative_logsumexp([a, b, c], exclusive=True)  # => [-inf, a, log(exp(a) * exp(b))]
```
Note that the neutral element of the log-sum-exp operation is `-inf`,
however, for performance reasons, the minimal value representable by the
floating point type is used instead.

By setting the `reverse` kwarg to `True`, the cumulative log-sum-exp is performed in the
opposite direction.
END
}
